const api = require('../../utils/api');
const app = getApp();

Page({
  data: {
    isLoading: true,
    isSuccess: false,
    message: '',
    orderInfo: null,
    preOrderNo: '',
    returnToOrderList: false
  },

  onLoad(options) {
    // 获取预订单号
    const preOrderNo = options.pre_order_no || '';
    const returnToOrderList = options.return_to_list === 'true';
    this.setData({
      preOrderNo,
      returnToOrderList
    });

    if (preOrderNo) {
      // 查询支付状态
      this.checkPaymentStatus(preOrderNo);
    } else {
      this.setData({
        isLoading: false,
        isSuccess: false,
        message: '缺少预订单信息'
      });
    }
  },

  // 查询支付状态
  checkPaymentStatus(preOrderNo) {
    this.setData({ isLoading: true });
    
    // 调用接口查询支付状态
    api.checkPaymentStatus(preOrderNo).then(res => {
      if (res.success) {
        const data = res.data;
        const isSuccess = data.status === 'paid';
        
        this.setData({
          isLoading: false,
          isSuccess,
          orderInfo: data.order || null,
          message: isSuccess ? '支付成功' : '支付' + this.getStatusText(data.status)
        });
      } else {
        this.setData({
          isLoading: false,
          isSuccess: false,
          message: res.message || '查询支付状态失败'
        });
      }
    }).catch(err => {
      this.setData({
        isLoading: false,
        isSuccess: false,
        message: '网络异常，请稍后再试'
      });
      console.error('查询支付状态失败', err);
    });
  },

  // 获取状态文本
  getStatusText(status) {
    switch (status) {
      case 'pending': return '处理中';
      case 'paid': return '成功';
      case 'cancelled': return '已取消';
      case 'expired': return '已过期';
      default: return '状态未知';
    }
  },

  // 返回首页
  goToHome() {
    wx.switchTab({
      url: '/pages/index/index'
    });
  },

  // 查看订单详情
  viewOrderDetail() {
    if (this.data.orderInfo && this.data.orderInfo.order_id) {
      wx.navigateTo({
        url: `/pages/booking/detail?id=${this.data.orderInfo.order_id}`
      });
    }
  },

  // 返回订单列表
  goToOrderList() {
    wx.redirectTo({
      url: '/pages/booking/list'
    });
  },

  // 重新支付
  repay() {
    if (!this.data.preOrderNo) return;
    
    // 根据预订单号获取支付参数
    api.getPayParams(this.data.preOrderNo).then(res => {
      if (res.success && res.data) {
        const payData = res.data;
        
        if (payData.need_pay) {
          // 调用微信支付
          wx.requestPayment({
            ...payData.pay_params,
            success: () => {
              // 支付成功后重新查询状态
              setTimeout(() => {
                this.checkPaymentStatus(this.data.preOrderNo);
              }, 1000);
            },
            fail: (err) => {
              console.error('支付失败', err);
              wx.showToast({
                title: '支付已取消',
                icon: 'none'
              });
            }
          });
        } else {
          // 无需支付（如余额已全额支付）
          this.checkPaymentStatus(this.data.preOrderNo);
        }
      } else {
        wx.showToast({
          title: res.message || '获取支付参数失败',
          icon: 'none'
        });
      }
    }).catch(err => {
      console.error('获取支付参数失败', err);
      wx.showToast({
        title: '网络异常，请稍后再试',
        icon: 'none'
      });
    });
  }
}) 